function maxSum(nums: number[], k: number, m: number): number {
    const nums_len = nums.length;
    // const dp = Array.from({length : nums_len}, (_, idx) => 0);
    const dp = Array.from(nums, (_, idx) => [0, 0]);
    for (let i = 0; i < nums.length; i++)
    {
        dp[i]
    }
};

/* new plan */
// dp[i:1-n][j:1-k][0-1]：最后一段子数组的结尾下标是不是i]
//      前1-i中 j段子数组 最后一段子数组的结尾下标是不是i 情况下的最大和
// === trans formula
// dp[i][j][0] = max(
//    dp[i-1][j-1][0],
//    dp[i-1][j-1][1],
// ) 
// dp[i][j][1] = max(
//    dp[i-1][j-1][0]+nums[i],
//    dp[i-1][j][1]+nums[i],
// ) 

// 漏看了一个条件：每个子数组的长度 至少 为 m
// 似乎加上这个条件题会更简单？
// === trans formula
// dp[i][j][0] = max(
//    dp[i-1][j][0],
//    dp[i-1][j-m-1][0]+sum(m个),
//    dp[i-1][j-m-1][1]+sum(m个),
// ) 

// === 感觉需要改为贡献/后推的方式
// dp[i][j][0/1]得到以后
// dp[i][j][0]+sum(m个)去更新dp[i+m][j+1][1]
// dp[i][j][0]+sum(m个)去更新dp[i+m+1][j+1][0]
// dp[i][j][1]+nums[i+1]去更新dp[i+1][j][1]